Layering is used to organize programming modules into separate functional components that interact in a sequential and hierarchical way so that each layer has an interface only to the layer above and below it, and thus, no need to understand the processing performed at any of the other layers. Communication programs may be structured in layers such that programming and hardware at both ends of the communication exchange use an identical set of layers. To process a message, data in a first device flows down through each layer and is transmitted through a physical media to a second device. Before reaching the second device, the message may “hop” multiple times before reaching the second device. The message is received at the second device, and the data flows up through the layers where it is ultimately presented to the user or used in an application at the second device.
A communication stack, for example, may include five layers: 1) a physical (PHY) layer, 2) a network interface layer, 3) an Internet Protocol (IP) layer, 4) a transport layer, and 5) an application layer. The PHY layer, also referred to as the hardware layer, provides the physical components that enable the transmission and reception of bits of information whether analog or digital. Access to the PHY layer is controlled by the network interface layer. The network interface layer provides transmission protocol knowledge and management, handles errors in the PHY layer, and provides flow control and frame synchronization. The network interface layer generally is divided into two sub-layers: the logical link control (LLC) sub-layer and the MAC sub-layer. The LLC sub-layer controls frame synchronization, flow control, and error checking. The MAC sub-layer provides transmission protocol knowledge and management thereby controlling how a device gains access to information, acquires the data path, and sends information over the data path. In general, the MAC sub-layer makes sure that devices sharing a common communications channel do not interfere with each other. Access control transmission technologies implemented at the MAC sub-layer include code division multiple access (CDMA), frequency division multiple access (FDMA), time division multiple access (TDMA), global system for mobile communications (GSM), general packet radio services (GPRS), carrier sense multiple access (CSMA), CSMA-collision detection (CSMA-CD), orthogonal frequency division multiplexing (OFDM), Aloha, slotted Aloha, spectrum portable management application (SPMA), Bluetooth, IEEE 802.11, etc.
IP is the method or protocol by which data is sent from one device to another through a network that may include both wired and wireless devices. Each device on the network has at least one IP address that uniquely identifies it from all of the other devices on the network. Originally, the devices were computers that connected to each other using IP through the Internet. Today, the devices that employ IP have expanded to include all types of communication devices including cellular phones, computers of any form factor including personal digital assistants, radios, etc. Using IP, a message is divided into small chunks called packets that each contain both the sender's IP address and the receiver's IP address. Each packet is treated as an independent unit of data without any relation to any other unit of data. The IP layer handles communication from one device to another device by providing, for example, the routing information that includes the IP addresses. Because a message is divided into a number of independent packets, each packet can, if necessary, be sent by a different route between the sending device and the receiving device. As a result, packets can arrive in a different order than the order in which they were sent.
The transport layer manages the end-to-end control of the data packets. The transport layer may use the user datagram protocol (UDP) or the transmission control protocol (TCP) to collect the packets and pass the packets on to the application layer. UDP passes the packets in the order in which they are received. TCP collects the packets and places the packets in the correct order before passing the packets to the application layer. The applications layer identifies other communication nodes, identifies quality of service, considers user authentication and privacy, identifies any constraints on data syntax, etc.
Quality of service (QoS) refers to the capability of a network to provide service to network traffic using various transmission technologies. The primary goal of QoS is to provide dedicated bandwidth, to control jitter and latency (required by some real-time and interactive traffic), and/or to improve loss characteristics based on a priority associated with specific network traffic while not allowing other network traffic flows to fail. As an example, different classes of traffic flow, such as voice, situational awareness, video, etc., can share the same network resources, yet be classified on an individual basis to assure high priority traffic receives sufficient bandwidth and speed of service during periods of network congestion.
The goal of ad-hoc networking technologies is to allow networks to automatically self-organize reducing the network planning burden and providing for task reorganization without operator intervention. Such self-organizing means that the protocol automatically identifies other communication devices as “neighbors” and links them together to create a wireless/wired network. In ad hoc networks including wireless communication devices, the wireless devices may move about arbitrarily. The mobility of the devices and the variability of other connection factors results in a network topology that may change rapidly and unpredictably. Ad hoc networks may or may not be connected with infrastructure such as the Internet. The basic assumption in an ad-hoc network is that two nodes willing to communicate may be outside the wireless transmission range of each other, but still be able to communicate in multiple hops, if other intermediate nodes in the network are willing to forward packets from them. Thus, routing in ad hoc networks requires the discovery of multi-hop paths between the wireless mobile nodes in the network that wish to communicate. Applications of ad hoc networks include military tactical communication, emergency relief operations, commercial and educational use in remote areas, etc.
Instead of sending data via multiple unicasts, multicasting reduces communication costs by minimizing bandwidth consumption and delivery delay. This is particularly important in a mobile, wireless environment where bandwidth is scarce and power availability limited. Multicast communication is an efficient means for supporting group-oriented applications, where the need for one-to-many or many-to-many data dissemination is frequent, for example, in situations involving disaster recovery or military battlefield scenarios. In multicast routing, packets from one sender must in general be delivered to multiple receivers all of which define a multicast group. Any node can send packets to the other devices in the multicast group at any time, and any node can join or leave the multicast group at any time.
Multicast routing, however, is a difficult problem in wired networks, and is even more challenging in ad hoc networks, due to the dynamic topology changes in the network due to node motion and wireless propagation variability, and due to the limited wireless network bandwidth and energy resources available at each communication node. Conventional routing protocols require knowledge of the topology of the entire network, and thus, are not suitable in a highly dynamic environment requiring topology update information to be propagated frequently throughout the network. What is needed is a multicast routing protocol that provides efficient and reliable routing of packets within an ad hoc network despite changing network topologies and radio channel characteristics. What is further needed is a multicast routing protocol that provides for the dynamic formation of multicast sessions.